package com.plpm.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * PLPM导入记录模型 - 对应base_datafile表
 * 用于接收下载文件
 * @author PLPM Team
 * @version 1.0
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BaseDataFile {
    
    /**
     * 文件索引(Integer)
     */
    @JsonProperty("importFileIndex")
    private Long importFileIndex;
    
    /**
     * 项目id
     */
    @JsonProperty("projectId")
    private String projectId;

    /**
     * 项目代号
     */
    @JsonProperty("projectNo")
    private String projectNo;
    
    /**
     * 地点
     */
    @JsonProperty("place")
    private String place;
    
    /**
     * 单位
     */
    @JsonProperty("company")
    private String company;
    
    /**
     * 产品阶段(科研3/批产2/维护保障1)
     */
    @JsonProperty("productPhase")
    private Integer productPhase;
    
    /**
     * 数据第一分类
     */
    @JsonProperty("dataTypeFirst")
    private Integer dataTypeFirst;
    
    /**
     * 数据第二分类
     */
    @JsonProperty("dataTypeSecond")
    private Integer dataTypeSecond;
    
    /**
     * 数据来源(控制器/健康管理/台架数采)
     */
    @JsonProperty("dataSource")
    private String dataSource;
    
    /**
     * 运行起始时间
     */
    @JsonProperty("startTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;
    
    /**
     * 通道编号(A通道/B通道)
     */
    @JsonProperty("channelNo")
    private String channelNo;
    
    /**
     * flase版本
     */
    @JsonProperty("flashVersion")
    private String flashVersion;
    
    /**
     * 飞机ID
     */
    @JsonProperty("planeId")
    private String planeId;
    
    /**
     * 飞机编号
     */
    @JsonProperty("planeNo")
    private String planeNo;
    
    /**
     * 发动机id
     */
    @JsonProperty("engineId")
    private String engineId;
    
    /**
     * 发动机编号
     */
    @JsonProperty("engineNo")
    private String engineNo;
    
    /**
     * 发动机位置
     */
    @JsonProperty("enginePlace")
    private String enginePlace;
    
    /**
     * 控制器id
     */
    @JsonProperty("ecuId")
    private String ecuId;
    
    /**
     * 控制器编号
     */
    @JsonProperty("ecuNo")
    private String ecuNo;
    
    /**
     * 控制系统id
     */
    @JsonProperty("ecuSysId")
    private String ecuSysId;
    
    /**
     * 控制系统编号
     */
    @JsonProperty("ecuSysNo")
    private String ecuSysNo;
    
    /**
     * 文件名
     */
    @JsonProperty("fileName")
    private String fileName;
    
    /**
     * 协议ID
     */
    @JsonProperty("protocolId")
    private Integer protocolId;
    
    /**
     * 运行时间(单位秒)
     */
    @JsonProperty("runningTime")
    private Double runningTime;
    
    /**
     * 上传时间
     */
    @JsonProperty("uploadTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date uploadTime;
    
    /**
     * 试验科目
     */
    @JsonProperty("subject")
    private String subject;
    
    /**
     * 备注(用于记录数据异常特征)
     */
    @JsonProperty("remark")
    private String remark;
    
    /**
     * 文件行数
     */
    @JsonProperty("recordRows")
    private Long recordRows;
    
    /**
     * 已导入行数
     */
    @JsonProperty("importRecordRows")
    private Long importRecordRows;
    
    /**
     * 原始文件路径
     */
    @JsonProperty("originalFilePath")
    private String originalFilePath;
    
    /**
     * 标准文件路径
     */
    @JsonProperty("standardFilePath")
    private String standardFilePath;
    
    /**
     * flash文件路径
     */
    @JsonProperty("flashFilePath")
    private String flashFilePath;
    
    /**
     * 台架编号
     */
    @JsonProperty("deviceNo")
    private String deviceNo;
    
    /**
     * 数据处理状态 0：待处理 1：已完成
     */
    @JsonProperty("handleStatus")
    private Integer handleStatus;
    
    /**
     * 是否主控 0：否， 1：是
     */
    @JsonProperty("isMainChannel")
    private Integer isMainChannel;
    
    /**
     * hdfs备份路径
     */
    @JsonProperty("hdfsBackPath")
    private String hdfsBackPath;
    
    /**
     * 序号
     */
    @JsonProperty("serialNumber")
    private Long serialNumber;
    
    /**
     * csv文件大小
     */
    @JsonProperty("csvSize")
    private Long csvSize;
    
    /**
     * 导入类型: 0:运行数据 1:结果数据
     */
    @JsonProperty("importType")
    private Integer importType;
    
    /**
     * 所属组织
     */
    @JsonProperty("orgCode")
    private String orgCode;
    
    /**
     * 数据操作人员
     */
    @JsonProperty("dataUser")
    private String dataUser;
    
    /**
     * 是否已判读
     */
    @JsonProperty("isAnalyzed")
    private Integer isAnalyzed;
    
    /**
     * 是否归档（0-未归档，1-归档）
     */
    @JsonProperty("isArchive")
    private Integer isArchive;
}
